package com.lj.common_web.annotation;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @author luojing
 * @since 2025/6/3 14:17
 * 频率限制
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Documented
public @interface RateLimit {

    /**
     * @return 限制次数
     */
    int limit();

    /**
     * @return 限制时间
     */
    int timeout();

    /**
     * @return 限制时间单位
     */
    TimeUnit unit() default TimeUnit.MINUTES;

    /**
     * IP: 主要是对接口ip限制,如果一个ip多次调用接口会达到限制
     * METHOD: 主要是对方法内部进行限制(不只是接口方法，也可以是service方法), 如果多个客户端多次调用一个接口会达到限制
     * @return 限制的模式
     */
    Model model() default Model.IP;


    enum Model {
        IP, METHOD
    }
}
